/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package produto;

import java.util.List;
import org.hibernate.Session;
import util.ErroAcessoRepositorioException;

/**
 *
 * @author Alberto
 */
public class CadastroProduto {

    /**
     *
     */
    private RepositorioProduto objRepositorioProduto = null;

    /**
     * 
     * @param objRepositorioProduto
     * @throws ErroAcessoRepositorioException
     */
    public CadastroProduto(RepositorioProduto objRepositorioProduto) throws ErroAcessoRepositorioException {
        this.objRepositorioProduto = objRepositorioProduto;
    }

    /**
     * Metodo que ira cadastrar o Produto
     *
     * @param Produto objProduto
     * @return void
     */
    public void cadastrarAtualizar(Produto objProduto) throws ProdutoJaCadastradoException, ErroAcessoRepositorioException {
        
        this.objRepositorioProduto.cadastrarAtualizar(objProduto);
    }

    /**
     * Metodo que ira produrar o Produto
     *
     * @param int idProduto
     * @return void
     */
    public Produto procurar(int idProduto) throws ProdutoNaoCadastradoException, ErroAcessoRepositorioException {
        return this.objRepositorioProduto.procurar(idProduto);
    }

    /**
     * Metodo que ira verificar a existência do Produto
     *
     * @param int idProduto
     * @return void
     */
    public boolean existe(int idProduto) throws ErroAcessoRepositorioException {
        return this.objRepositorioProduto.existe(idProduto);
    }

    /**
     * Metodo que ira listar os Produtos
     *
     * @return Collection
     */
    public List<Produto> listar(String strComplemento) throws Exception, ErroAcessoRepositorioException {
        return this.objRepositorioProduto.listar(strComplemento);
    }

    /**
     * Método que ira remover o produto do banco
     *
     * @param idProduto
     */
    public void remover(int idProduto) throws ProdutoNaoCadastradoException, ErroAcessoRepositorioException {
        this.objRepositorioProduto.remover(idProduto);
    }

    /**
     * Método que verifica se já existe um produto com a nota informada
     * 
     * @param numeroNota
     * @return boolean
     */
    public boolean existePorNumeroNota(String numeroNota) {
        return this.objRepositorioProduto.existePorNumeroNota(numeroNota);
    }
}
